package com.example.airole.common.entity;

import jakarta.validation.constraints.NotBlank;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 角色实体
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class Role {
    
    /**
     * 数据库主键ID
     */
    private Long id;
    
    /**
     * 角色ID
     */
    private String roleId;
    
    /**
     * 角色名称
     */
    @NotBlank(message = "角色名称不能为空")
    private String name;
    
    /**
     * 角色描述
     */
    private String description;
    
    /**
     * 角色头像URL
     */
    private String avatar;
    
    /**
     * 系统提示词
     */
    @NotBlank(message = "系统提示词不能为空")
    private String systemPrompt;
    
    /**
     * 角色性格
     */
    private String personality;
    
    /**
     * 角色背景
     */
    private String background;
    
    /**
     * 角色设定
     */
    private String setting;
    
    /**
     * 对话风格
     */
    private String conversationStyle;
    
    /**
     * 语言
     */
    private String language;
    
    /**
     * 温度参数
     */
    private BigDecimal temperature;
    
    /**
     * Top P参数
     */
    private BigDecimal topP;
    
    /**
     * 最大令牌数
     */
    private Integer maxTokens;
    
    /**
     * 角色分类
     */
    private String category;
    
    /**
     * 是否公开
     */
    private Boolean isPublic;
    
    /**
     * 使用次数
     */
    private Long usageCount;
    
    /**
     * 评分
     */
    private BigDecimal rating;
    
    /**
     * 创建时间
     */
    private LocalDateTime createTime;
    
    /**
     * 更新时间
     */
    private LocalDateTime updateTime;
}

